Générer des Annonces Immobilières avec n8n et DocuGenerate

Image de l'article
Auteur Par DocuGenerate

13 Mars 2026

Introduction

Les agences immobilières et les sociétés de gestion immobilière produisent régulièrement des documents d’annonce pour les nouveaux biens, qu’il s’agisse d’impression, de campagnes e-mail ou de portails clients. Assembler ces documents manuellement, de la collecte des informations de l’agent et de la rédaction des descriptions à la recherche de photos et à la mise en forme cohérente de l’ensemble, prend un temps qui pourrait être consacré ailleurs. Dans ce tutoriel, nous allons créer un flux automatisé utilisant n8n, Claude et DocuGenerate qui produit un PDF d’annonce immobilière soigné et prêt à partager en quelques secondes.

Le flux utilise le nœud Anthropic dans n8n, qui appelle Claude pour générer des données d’annonce réalistes à la demande, et les fusionne dans un modèle Word conçu professionnellement via DocuGenerate. Le PDF final est ensuite téléchargé et enregistré directement dans un dossier Dropbox. Bien que ce tutoriel utilise Claude pour simuler la saisie de données, le même flux peut être connecté à n’importe quelle source de données réelle : un formulaire web, un CRM, une base de données immobilière, ou une feuille de calcul. Les étapes de génération et de livraison du document restent identiques quelle que soit la provenance des données, ce qui en fait une base solide pour l’automatisation en conditions réelles. À la fin de ce guide, vous disposerez d’un flux n8n entièrement fonctionnel que vous pourrez importer et adapter à votre propre cas d’usage.

Configurer le Modèle d’Annonce Immobilière

Avant de construire le flux n8n, nous avons besoin d’un modèle de document dans DocuGenerate. Pour ce tutoriel, nous utiliserons le modèle Word Property Listing, qui propose une mise en page immobilière épurée avec une grande image principale en haut, une rangée de trois photos d’intérieur, les informations clés du bien, un QR code renvoyant vers la page de l’annonce, et une carte de contact de l’agent en bas de page.

Modèle Property Listing avec balises de fusion

Le modèle utilise les balises de fusion suivantes :

  • agent_photo, agent_name, agent_email, agent_phone, agent_address : les coordonnées de l’agent affichées dans la carte de pied de page.
  • price : affiché en évidence à côté du titre.
  • surface, bedrooms, bathrooms, kitchens : les caractéristiques clés du bien affichées dans la ligne de détails.
  • description : un court paragraphe décrivant le bien, affiché sous la section d’en-tête.
  • main_image, image1, image2, image3 : les photos du bien intégrées dans la mise en page.
  • url : converti en QR code affiché dans le coin supérieur droit du document.

Plusieurs fonctionnalités de ce modèle méritent d’être détaillées :

  • Dimensionnement des images. L’image principale utilise la syntaxe de taille [%main_image | size:'auto':600] pour limiter sa hauteur à 600 pixels tout en préservant le ratio d’aspect. Les trois photos d’intérieur utilisent [%image1 | size:240:'auto'] pour fixer leur largeur à 240 pixels, gardant les trois images à la même taille et alignées sur une rangée. Les images peuvent être transmises sous forme d’URL publique ou d’URI de données encodée en base64.

  • QR code. Le champ url n’est pas affiché en texte brut. Le modèle utilise plutôt la syntaxe [%url | qrcode:60:60 | set:'barcolor':'#2f7498'] pour afficher la valeur sous forme de QR code avec des dimensions personnalisées et une couleur de marque correspondant au thème du document. Scanner le code dans le PDF généré amène le lecteur directement vers la page de l’annonce en ligne.

  • Pluralisation. La ligne de statistiques utilise une syntaxe conditionnelle pour gérer automatiquement la pluralisation. Par exemple, le nombre de chambres est écrit [bedrooms] Bedroom[#bedrooms > 1]s[/] dans le modèle, ce qui produit « 1 Bedroom » ou « 3 Bedrooms » selon la valeur du champ bedrooms. Le même schéma s’applique à bathrooms et kitchens.

Ces trois fonctionnalités s’appuient toutes sur la syntaxe avancée de DocuGenerate, qui doit être activée pour le modèle avant de générer des documents. Vous pouvez l’activer dans les paramètres du modèle de l’application web.

Vue d’Ensemble du Flux n8n

Dans ce flux, nous utiliserons Claude pour générer des données d’annonce fictives afin de pouvoir démontrer le processus de bout en bout sans nécessiter de base de données ou de système externe en direct. Dans un déploiement réel, le déclencheur manuel et le nœud Message a model seraient remplacés par un déclencheur et une source de données reflétant votre processus réel.

Le flux complet se compose de plusieurs nœuds connectés dans une séquence linéaire :

Le flux n8n complet

Vous pouvez télécharger le fichier JSON du flux et l’importer directement dans votre instance n8n. Vous devrez mettre à jour l’ID du modèle DocuGenerate, vos identifiants API, et le chemin de destination Dropbox pour correspondre à votre propre configuration. Passons en revue chaque nœud en détail.

Générer les Données d’Annonce avec Claude

Le premier nœud fonctionnel est le nœud Message a model de l’intégration Anthropic, configuré pour utiliser le modèle claude-sonnet-4-6. Son rôle dans ce flux est de produire un ensemble réaliste de valeurs d’annonce immobilière pouvant être transmises à DocuGenerate. Pour utiliser ce nœud, vous aurez besoin d’un compte Anthropic et d’une clé API générée depuis la Console Anthropic, que vous ajoutez comme identifiant dans n8n lors de la première configuration du nœud.

Configuration de la clé API pour le nœud Anthropic

Le prompt inclut la structure JSON complète attendue par le modèle, la plupart des champs étant laissés vides pour que Claude les remplisse. Le champ agent_photo est pré-rempli avec un modèle d’URL provenant de randomuser.me, un service gratuit qui renvoie une photo de portrait réaliste pour un identifiant numérique donné. Claude est invité à remplacer <AGENT_ID> par un entier aléatoire entre 1 et 50, produisant une photo d’agent différente à chaque exécution.

Configuration du nœud Message a model

Voici le prompt complet utilisé dans le nœud :

Can you generate dummy values for the following JSON? The <AGENT_ID> needs to be an integer from 1 to 50.
The description needs to be around 400 characters. The output needs to be just the updated JSON.

{
  "agent_photo": "https://randomuser.me/api/portraits/women/<AGENT_ID>.jpg",
  "agent_address": "",
  "agent_phone": "",
  "agent_email": "",
  "agent_name": "",
  "description": "",
  "kitchens": "",
  "bathrooms": "",
  "bedrooms": "",
  "surface": "",
  "price": "",
  "url": "https://www.docugenerate.com/fr/blog/generer-des-annonces-immobilieres-avec-n8n-et-docugenerate/",
  "main_image": "https://images.pexels.com/photos/1571459/pexels-photo-1571459.jpeg",
  "image1": "https://images.pexels.com/photos/2062431/pexels-photo-2062431.jpeg?w=400",
  "image2": "https://images.pexels.com/photos/2089698/pexels-photo-2089698.jpeg?w=400",
  "image3": "https://images.pexels.com/photos/164595/pexels-photo-164595.jpeg?w=400"
}

Les quatre champs d’image sont laissés en URL Pexels statiques par simplicité. Dans un scénario réel, il s’agirait de véritables photos du bien récupérées depuis une médiathèque, une pièce jointe CRM, ou un espace de stockage cloud. Le champ url renvoie vers cet article de blog et sera affiché sous forme de QR code dans le document final.

Claude renvoie le JSON complété encadré dans un bloc de code markdown. La réponse du nœud Message a model a la structure suivante :

[
  {
    "content": [
      {
        "type": "text",
        "text": "```json\n{\n  \"agent_name\": \"Sarah Mitchell\",\n  \"price\": \"$485,000\",\n  ...\n}\n```"
      }
    ]
  }
]

Les données d’annonce réelles sont imbriquées dans content[0].text et encadrées par des balises markdown, ce qui signifie qu’elles ne peuvent pas être utilisées directement par le nœud suivant. C’est ce que gère le nœud Code à l’étape suivante.

Analyser la Réponse de Claude

Le nœud Code in JavaScript extrait l’objet JSON de la réponse de Claude et l’expose sous forme de données propres et structurées pour le reste du flux. Cette étape est nécessaire pour deux raisons : le nœud Message a model renvoie l’objet de réponse API complet plutôt que le seul contenu textuel, et Claude a tendance à encadrer sa sortie JSON avec des balises de code markdown même lorsqu’il lui est demandé de ne pas le faire. Plutôt que de s’appuyer sur l’ingénierie de prompt pour corriger cette incohérence, le nœud Code la gère de manière fiable à chaque fois.

Configuration du nœud Code in JavaScript

const text = $input.first().json.content[0].text;
const json = text.replace(/```json\n?/, '').replace(/\n?```/, '').trim();
return { json: JSON.parse(json) };

La première ligne lit la valeur texte de la réponse de Claude. La deuxième ligne supprime les balises de code markdown à l’aide de deux expressions régulières. La troisième ligne analyse la chaîne nettoyée en un objet JavaScript et le renvoie comme sortie du nœud. Après cette étape, tous les champs de l’annonce (agent_name, price, bedrooms, etc.) sont disponibles comme clés de premier niveau dans le JSON de l’élément, prêts à être transmis directement à DocuGenerate.

Générer le Document

Le nœud Generate document utilise l’intégration DocuGenerate pour n8n afin de fusionner les données d’annonce avec le modèle Word et de produire un PDF. Pour utiliser ce nœud, installez DocuGenerate dans votre instance n8n et configurez-le avec votre clé API.

Configuration du nœud Generate document

Le nœud est configuré avec les paramètres suivants :

  • Template Name or ID : le modèle Property Listing téléversé à l’étape de configuration du modèle.
  • Name : une expression n8n qui génère un nom de document dynamique : Property Listing for {{ $json.price }} ({{ $json.surface }}). Cela produit un nom de fichier tel que Property Listing for $485,000 (1,850 sq ft) qui rend chaque document facile à identifier.
  • Format : défini sur PDF (.pdf).
  • Data : défini sur {{ $json }}, qui transmet l’ensemble de la sortie du nœud Code comme charge de données. Puisque le nœud Code produit déjà un objet JSON plat avec tous les champs du modèle au premier niveau, aucune correspondance supplémentaire n’est nécessaire.

Lorsque le nœud s’exécute avec succès, la réponse contient, entre autres, un champ document_uri avec une URL pointant vers le PDF généré, et un champ filename avec le nom du fichier du document.

Télécharger le PDF Généré

DocuGenerate renvoie une URL vers le document généré plutôt que le contenu binaire du fichier directement. Pour téléverser le PDF sur Dropbox à l’étape suivante, nous devons d’abord récupérer le fichier depuis cette URL. Le nœud HTTP Request s’en charge en effectuant une requête GET vers le document_uri renvoyé par le nœud Generate document.

Configuration du nœud HTTP Request

Le paramètre URL est défini sur {{ $json.document_uri }}, référençant l’URL du document de l’étape précédente. Les données binaires du fichier sont alors disponibles pour le nœud Dropbox pour le téléversement.

Enregistrer le PDF sur Dropbox

Le dernier nœud téléverse le PDF généré dans un dossier Dropbox désigné à l’aide du nœud Dropbox de n8n, donnant à l’équipe un accès immédiat au nouveau document d’annonce.

Configuration du nœud Upload a file

Le nœud utilise une authentification OAuth2 connectée à votre compte Dropbox. Le paramètre File Path est défini sur /n8n/Property Listings/{{ $json.filename }}, enregistrant chaque document dans le dossier /n8n/Property Listings/ en utilisant le nom de fichier renvoyé par DocuGenerate. L’option Binary File est activée afin que le nœud lise le contenu du fichier depuis la sortie du nœud HTTP Request plutôt que depuis un chemin statique.

Une fois le flux terminé, le PDF généré est disponible dans Dropbox et ressemble à ceci. Vous pouvez également télécharger un exemple de PDF pour voir le résultat final.

Exemple de PDF d'annonce immobilière généré

Sources de Données Réelles

Le flux actuel utilise Claude comme substitut pratique à une source de données réelle, mais en pratique, les données d’annonce immobilière proviennent rarement d’un modèle d’IA. Elles se trouvent généralement dans une soumission de formulaire, un enregistrement CRM, une ligne de base de données, ou une feuille de calcul. Puisque les étapes de génération et de livraison du document restent les mêmes quelle que soit l’origine des données, remplacer le nœud Anthropic par un autre déclencheur et une autre source de données suffit pour transformer ce flux de tutoriel en automatisation prête pour la production. Voici quelques scénarios courants pour lesquels ce flux est bien adapté.

Formulaires Web

De nombreuses agences utilisent des formulaires en ligne pour collecter les informations des biens auprès des agents avant de préparer le matériel marketing. Un outil de formulaire comme Jotform, Typeform ou Tally peut capturer des champs tels que l’adresse, le prix, le nombre de pièces, la surface, et une description directement auprès de l’agent. Lorsqu’une nouvelle soumission arrive, la plateforme de formulaire peut déclencher le flux n8n via un webhook, transmettant toutes les données collectées directement à l’étape de génération du document. Cela fait de la création d’annonce immobilière une suite naturelle au processus de collecte, sans transfert de données manuel requis.

Systèmes CRM

Les entreprises immobilières qui gèrent leur inventaire dans un CRM comme Salesforce, HubSpot ou Pipedrive peuvent déclencher la génération de documents chaque fois qu’un enregistrement de bien atteint une certaine étape du pipeline, par exemple lorsqu’il est marqué comme « Prêt à publier » ou « Nouvelle annonce ». Le flux récupérerait les champs pertinents de l’enregistrement CRM, les fusionnerait dans le modèle, et enregistrerait soit le PDF dans l’enregistrement, soit le livrerait par e-mail à l’agent assigné. Cela maintient le document d’annonce synchronisé avec les données du CRM et élimine la double saisie de données.

Bases de Données et Feuilles de Calcul

Les équipes qui gèrent leur inventaire immobilier dans une base de données comme PostgreSQL, Airtable ou Notion, ou dans une feuille de calcul comme Google Sheets ou Excel, peuvent interroger les enregistrements nouveaux ou mis à jour selon une planification ou en réponse à l’ajout d’une ligne. n8n dispose de nœuds natifs pour toutes ces plateformes, ce qui simplifie la lecture d’une ligne, la correspondance des colonnes avec les champs du modèle, et la génération d’un PDF pour chaque bien. Cette approche fonctionne particulièrement bien pour les agences qui ajoutent plusieurs annonces à la fois et souhaitent générer tous les documents en une seule exécution automatisée.

Conclusion

Dans ce tutoriel, nous avons construit un flux n8n qui génère automatiquement un PDF d’annonce immobilière. Le flux utilise Claude pour simuler une saisie de données réaliste, analyse la réponse en JSON structuré, fusionne les données avec un modèle Word conçu professionnellement, et enregistre le PDF résultant sur Dropbox. Le modèle illustre plusieurs fonctionnalités avancées de DocuGenerate, notamment le dimensionnement d’images avec des filtres, la génération de QR codes, et la pluralisation automatique via une syntaxe conditionnelle.

Dans un déploiement réel, le nœud Anthropic serait remplacé par une connexion à votre source de données réelle, qu’il s’agisse d’un formulaire web, d’un CRM, d’une base de données, ou d’une feuille de calcul. Les étapes de génération et de livraison du document restent les mêmes, ce qui rend ce flux simple à adapter à presque toutes les configurations de gestion immobilière.

Ressources

Partager Cet Article